1. Technical Field
The present invention relates generally to an improved data processing system, and in particular, to a method and apparatus for managing software components. Still more particularly, the present invention provides a method and apparatus for automatically updating software components.
2. Description of Related Art
Modern computing technology has resulted in immensely complicated and ever-changing environments. One such environment is the Internet, which is also referred to as an “internetwork”. The Internet is a set of computer networks, possibly dissimilar, joined together by means of gateways that handle data transfer and the conversion of messages from a protocol of the sending network to a protocol used by the receiving network. When capitalized, the term “Internet” refers to the collection of networks and gateways that use the TCP/IP suite of protocols. Currently, the most commonly employed method of transferring data over the Internet is to employ the World Wide Web environment, also called simply “the Web”. Other Internet resources exist for transferring information, such as File Transfer Protocol (FTP) and Gopher, but have not achieved the popularity of the Web. In the Web environment, servers and clients effect data transaction using the Hypertext Transfer Protocol (HTTP), a known protocol for handling the transfer of various data files (e.g., text, still graphic images, audio, motion video, etc.). The information in various data files is formatted for presentation to a user by a standard page description language, the Hypertext Markup Language (HTML). The Internet also is widely used to transfer applications to users using browsers. Often times, users of software packages may search for and obtain updates to those software packages through the Internet.
Other types of complex network data processing systems include those created for facilitating work in large corporations. In many cases, these networks may span across regions in various worldwide locations. These complex networks also may use the Internet as part of a virtual product network for conducting business. These networks are further complicated by the need to manage and update software used within the network.
Such environments, made up of many loosely connected software components, are typically somewhat fragile. Within these environments, deploying a new version of one of the software components involved in the network data processing system is problematic, and may well have far-reaching and unforeseen effects on parts of the overall system that are only tangentially connected to the component being replaced. Even less obviously risky changes are often prone to cause unpredictable and undesirable side effects. Thus, system administrators are often extremely wary of performing updates, such as component upgrades or minor configuration changes, due to these far-reaching effects. When information systems are so critical to modern business, even seconds of downtime can be a serious problem, and tracing that downtime can take far more than seconds. For example, email servers provide a critical component for many businesses because these servers facilitate communications between users inside and outside of the business or organization. An update to an email server that results in errors in delivery of email messages can cause loss in productivity and loss of business for a company or organization.
As software changes to become increasingly “autonomic”, the task of updating, configuring, and patching software will, more and more, be performed by the computers themselves, as opposed to being performed by administrators. The current updating mechanisms are moving towards an “autonomic” process. For example, many operating systems and software packages will automatically look for updates based on some event, such as a timer or a particular set of actions by a user. The update mechanisms often connect to the Internet at a preselected location to see whether an update is present. If an update is present, the message is presented to the user in which the message asks the user whether to download and install the update. A next step towards “autonomic” computing involves identifying and downloading the updates without requiring user intervention. Therefore, it would be advantageous to have an improved method, apparatus, and computer instructions to deal with the effects, be they undesired or merely unexpected, that such updating, reconfiguring, and patching of software could cause.